package com.hmall.search.configuration;

import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ElasticSearchClientConfig {

	@Bean
	@Qualifier("highLevelClient")
	public RestHighLevelClient restHighLevelClient() {
		// RestHighLevelClient highLevelClient = new RestHighLevelClient(
		// RestClient.builder(new HttpHost("127.0.0.1", 9200, "http")));

		RestHighLevelClient highLevelClient = new RestHighLevelClient(
				RestClient.builder(new HttpHost("192.168.200.128", 9200, "http"))
						.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
							// 该方法接收一个RequestConfig.Builder对象，对该对象进行修改后然后返回。
							@Override
							public RequestConfig.Builder customizeRequestConfig(
									RequestConfig.Builder requestConfigBuilder) {
								return requestConfigBuilder.setConnectTimeout(5000 * 1000) // 连接超时（默认为1秒）
										.setSocketTimeout(60000 * 10000);// 套接字超时（默认为30秒）//更改客户端的超时限制默认30秒现在改为100*1000分钟
							}
						}));// 调整最大重试超时时间（默认为30秒）.setMaxRetryTimeoutMillis(60000);

		return highLevelClient;
	}

}